#include <stdio.h>

#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"

lua_State* L;

int
lua_add (int x, int y) {
    int result;

    /*函数名*/
    lua_getglobal(L, "lua_add");

    /*参数入栈*/
    lua_pushnumber(L, x);

    /*参数入栈*/
    lua_pushnumber(L, y);

    /*开始调用函数，有2个参数，1个返回值*/
    lua_call(L, 2, 1);

    /*取出返回值*/
    result = (int) lua_tonumber(L, -1);

    /*清除返回值的栈*/
    lua_pop(L, 1);

    return result;
}

int
main (int argc, char *argv[]) {
    L = luaL_newstate();  /* 创建lua状态机 */

    /* 打开Lua状态机中所有Lua标准库 */
    luaL_openlibs(L);   

    /*加载lua脚本*/
    luaL_dofile(L, "lua_demo.lua");

    /*调用C函数，这个里面会调用lua函数*/
    int result = lua_add(99, 10);

    printf("The Result Is %d \n", result);

    /*清除Lua*/
    lua_close(L);

    return 0;
}
